Anleitung zur Installation des IO-Warrior Treibers fr Linuxkernel ab V2.6.9 oder SuSE 9.2


1. Vorbereitungen

1.1 Das Modul 'hid.ko' patchen
Entfllt

1.2 Installieren des IO-Warrior Treibers
Wenn der Treiber nur zu Testzwecken geladen werden soll, so gengt die Ausfhrung von 'insmod iowarrior.ko'. Um den Treiber wieder zu entladen entsprechend 'rmmod iowarrior', sofern dies vom Kernel untersttzt wird. Soll der Treiber jedoch dauerhaft installiert werden, so ist die Datei 'iowarrior.ko' in den Ordner
	'/lib/modules/<version>/kernel/drivers/usb/misc/'
zu kopieren (fr SuSE 9.2) und die Modulabhngigkeiten mssen mit dem Kommando 'depmod' aktuallisiert werden. Diese Schritte fhrt auch der erste Teil des Shellskripts 'iowarrior_load' aus, sofern es mit root-Rechten aufgerufen wird.
Mit einem Eintrag wie z.B. "modprobe iowarrior" in der Datei '/etc/init.d/boot.local' kann der Treiber bei jedem Systemstart automatisch geladen werden.

1.3 Erzeugen der Gerteknoten
Die Zugriffe auf den IO-Warrior erfolgen ber Eintrge im '/dev'-Verzeichnis. Diese mssen im Normalfall jedoch erst noch erstellt werden. Zu diesem Zweck ist der zweite Abschnitt im Shellscript 'iowarrior_load' vorgesehen. Der Aufruf mu wie bereits erwhnt, mit root-Rechten erfolgen. Mit seiner Hilfe werden die Gerteknoten "/dev/usb/iowarrior<X>" erzeugt, wobei <X> den Zahlen von 0 bis 15 entspricht. Es knnen damit bis zu acht IO-Warrior gleichzeitig angeschlossen werden (siehe auch Abschnitt 2).


2. Zugriffe auf den IO-Warrior

Fr jedes Interface des IO-Warrior wird ein Gerteknoten belegt, d.h. die aktuellen IO-Warrior belegen zwei Gerteknoten. Den ersten fr den Zugriff auf die einfache I/O-Funktion und den zweiten fr die Special Mode Functions. Der Treiber besitzt einen internen Puffer von z. Zt. 16 Paketen pro Interface. Wenn es zu einem Pufferberlauf kommt, so wird das lteste Paket verworfen. Um feststellen zu knnen, ob ein Pufferberlauf stattgefunden hat, wird jedem Paket eine Seriennummer mitgegeben (nicht zu verwechseln mit der Seriennummer des IO-Warriors). Dabei handelt es sich um einen vorzeichenlosen 8-Bit Wert, der fr jedes Paket um eins erhht wird ( ... 254, 255, 0, 1, usw.). Diese Seriennummer steht jedoch nur bei der Dateioperation "read" zur Verfgung und nicht bei Lesezugriffen mittels "ioctl". Um die Seriennummer zu erhalten, mu der Lesepuffer der "read"-Funktion um ein Byte erweitert werden. In diesem befindet sich dann nach erfolgreicher Ausfhrung die Seriennummer des Paketes.

Weitere Einzelheiten zur Ansteuerung eines IO-Warrior knnen den Beispielprogrammen entnommen werden.
